package models

import (
	"gorm.io/gorm"
	"servers/basic/config"
	"time"
)

type Project struct {
	Id               uint           `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	Address          string         `gorm:"column:address;type:varchar(255);comment:用户地址;not null;" json:"address"`                                             // 用户地址
	CleanType        uint           `gorm:"column:clean_type;type:int UNSIGNED;comment:服务类型：1：日常保洁 2：深度清洁 3：开荒保洁 4：家电清洗;not null;default:0;" json:"clean_type"` // 服务类型：1：日常保洁 2：深度清洁 3：开荒保洁 4：家电清洗
	BeginPrice       uint           `gorm:"column:begin_price;type:int UNSIGNED;comment:基础价格;not null;default:0;" json:"begin_price"`                           // 基础价格
	CleanPrice       uint           `gorm:"column:clean_price;type:int UNSIGNED;comment:保洁价格;not null;default:0;" json:"clean_price"`                           // 保洁价格
	CleanTime        uint           `gorm:"column:clean_time;type:int UNSIGNED;comment:保洁时长;not null;default:0;" json:"clean_time"`                             // 保洁时长
	CleanDesc        string         `gorm:"column:clean_desc;type:varchar(255);comment:所含项目;not null;" json:"clean_desc"`                                       // 所含项目
	CleanArea        uint           `gorm:"column:clean_area;type:int UNSIGNED;comment:清洁面积;not null;default:0;" json:"clean_area"`                             // 清洁面积
	CleanCoefficient string         `gorm:"column:clean_coefficient;type:varchar(255);comment:难度系数;not null;" json:"clean_coefficient"`                         // 难度系数
	Status           uint           `gorm:"column:status;type:int UNSIGNED;comment:服务状态：1：待接单 2：已接单 3：已取消;default:1;" json:"status"`                            // 服务状态：1：待接单 2：已接单 3：已取消
	CreatedAt        time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt        time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt        gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (p *Project) TableName() string {
	return "project"
}
func (p *Project) CreateProject() error {
	return config.DB.Create(&p).Error
}
func (p *Project) GetProjectList() (projectList []*Project, err error) {
	err = config.DB.Find(&projectList).Error
	return
}
